/*-----------------------------------------------------------------------------
 * Trampoline.h
 *-----------------------------------------------------------------------------
 * 
 *-----------------------------------------------------------------------------
 * All rights reserved by somma (fixbrain@gmail.com, unsorted@msn.com)
**---------------------------------------------------------------------------*/
#ifndef _CREATEFILEA_TRAMPOLINE_H_
#define _CREATEFILEA_TRAMPOLINE_H_

// trampoline function
//
//__declspec(naked) 
HANDLE
__stdcall 
CreateFileA_Trampoline(
	_In_ LPCSTR lpFileName,
	_In_ DWORD dwDesiredAccess,
	_In_ DWORD dwShareMode,
	_In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes,
	_In_ DWORD dwCreationDisposition,
	_In_ DWORD dwFlagsAndAttributes,
	_In_opt_ HANDLE hTemplateFile
	);

// Detour fucntion
// 
HANDLE
__stdcall 
CreateFileA_Detour(
	_In_ LPCSTR lpFileName,
	_In_ DWORD dwDesiredAccess,
	_In_ DWORD dwShareMode,
	_In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes,
	_In_ DWORD dwCreationDisposition,
	_In_ DWORD dwFlagsAndAttributes,
	_In_opt_ HANDLE hTemplateFile
	);


//typedef 
//NTSTATUS 
//(__stdcall *ZWQUERYSYSTEMINFORMATION)(
//	IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
//	OUT PVOID SystemInformation,
//	IN ULONG SystemInformationLength,
//	OUT PULONG ReturnLength OPTIONAL
//	);

#endif//_CREATEFILEA_TRAMPOLINE_H_

